home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
051-075
/
disk_065
/
mwb
/
mwb.doc
< prev
next >
Wrap
Text File
|
1992-05-06
|
4KB
|
103 lines
MWB.DOC (Alternate Workbench Screen)
(C) 1987 Matthew Dillon, All Rights Reserved.
Freely Distributable. This document must accompany all distributions.
Re-Distributing the source is optional.
WBM is a program which will create new 'workbench' screens and route
by request OpenWindow() calls meant for the workbench to these new
screens.
MWB_RESIDENT is the resident portion of MWB and should NOT be executed
directly. When you issue an initialize command (MWB i), MWB_RESIDENT will
be LoadSeg()d into memory and run as a task. MWB_RESIDENT then intercepts
and interprets all OpenWindow() requests, allowing OpenWindow()'s to
CUSTOMSCREEN's to go through, and possibly modifying OpenWindows() to
the workbench screen to go to a custom screen. Applications usually don't
know they are running on a custom screen. The Application's NewWindow
structure is not modified (MWB modifies a copy of NW and calls OpenWindow()
with the copy).
When using more advanced commands with MWB, it *is* possible to crash the
machine. Apart from that, it's pretty bulletproof... you can't screw
things up by running 'MWB i' multiple times, or 'MWB u' multiple times.
Additionaly, if you uninitialize MWB with 'MWB u' and there are still MWB
screens hanging around which can't be closed because they have active
windows, the MWB state information is NOT deallocated and becomes available
when you initialize again (MWB i).
MWB i initialize MWB
MWB u remove MWB
MWB c clear all MWB custom screens which have NO open windows
MWB [L] [N] [I] [h#] [w#] [d#] n next open to new custom screen
MWB # next open to specified screen# (0=wb, 1=first cust scr, etc...)
I -force interlace mode
N -force non-interlace mode
L -force LOW-RESOLUTION mode
h# -set screen height
w# -set screen width
d# -set screen depth
NOTE: Anything left unspecified uses the default Workbench parameters.
If Height and Width are left unspecified, MWB will automatically
compensate the width and height for any mode changes (LORES/INTERLACE).
The 'n' command for 'new custom screen' causes the next OpenWindow() to
go to a custom screen.
NOTE: Normally, any OpenWindow() calls to the WorkBench will get
routed to the current custom screen, so you should be careful when
specifying screens of different dimensions than the workbench. Most
applications expect at least 640x200 and open their windows accordingly.
EXAMPLES:
% mwb i
% mwb n
% newcli put newcli window on a new custom screen
% mwb i
% mwb I d1 n
% newcli put newcli window on a new interlace custom
screen of depth 1.
% mwb 0 next OpenWindow() goes to workbench screen
% mwb 1 next OpenWindow() goes to first curstom screen
% mwb L h100 d1 n next OpenWindow() goes to new LO-RES custom
screen of height 100 and depth 1.
PROBLEMS:
Problems with the workbench (LoadWb). Do NOT LoadWb to a custom screen.
You must LoadWb to the real workbench screen. Once running, you can use
MWB to cause workbench windows to come up in a custom screen, but the
workbench will get confused if you attempt to MOVE icons from those
windows.
NOTE that some applications expect the workbench to be a specific size;
they may even check the workbench screen parameters. If such application's
OpenWindow() is re-routed to a custom screen, you should be careful that
this custom screen is of the same type as the default workbench screen.
This can be accomplished by specifying "MWB n" without any qualifier
options.
MWB does NOT allow you to open arbitrary windows in other application's
custom screens. Why? You may ask the question: What would happen if
that application CloseScreen()'d it's screen with other, illegal windows
still active? FireWorks.
COMPILING:
You must compile with Aztec with the +L option for MWB.C, and with the
+BCDL options for MWB_RESIDENT.C. Link with the CL32.LIB.
The reason for all of this is because the small code/data model cannot
be used for MWB_RESIDENT since it is run directly from MWB without any
standard startup support (the +B option disables the inclusion of
the startup code for Aztec).